<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes"/>
<title>3.1 嵌入式系统 | pansis.io</title>
<link rel="shortcut icon" href="https://github.pansis.site/favicon.ico">
<link href="https://github.pansis.site/styles/main.css" rel="stylesheet">
<link href="//at.alicdn.com/t/c/font_1678829_b85ccgkdqkr.css" rel="stylesheet">
<link href="//cdnjs.cloudflare.com/ajax/libs/KaTeX/0.10.0/katex.min.css" rel="stylesheet">
<link rel="alternate" type="application/rss+xml" title="pansis.io » Feed" href="https://github.pansis.site/atom.xml">
        <meta name="description" content="一、相关概念
1、嵌入式系统的定义
以应用为中心，以计算机技术为基础， 软件及硬件可裁剪，满足应用系统对功能(含 AI）、可靠性、成本、体积、功耗等方面严 格要求的专用计算机系统
2、嵌入式操作系统分类
1、按收费模式划分

商用型 ：Vx..." />
        <meta name="keywords" content="嵌入式系统" />
        <!-- OG -->
        <meta property="og:locale" content="zh_CN">
        <meta property="og:title" content="3.1 嵌入式系统" />
        <meta property="og:type" content="article" />
        <meta property="og:description" content="一、相关概念
1、嵌入式系统的定义
以应用为中心，以计算机技术为基础， 软件及硬件可裁剪，满足应用系统对功能(含 AI）、可靠性、成本、体积、功耗等方面严 格要求的专用计算机系统
2、嵌入式操作系统分类
1、按收费模式划分

商用型 ：Vx...">
        <meta property="og:url" content="https://github.pansis.site/post/3.1 嵌入式系统/" />
        <meta property="og:site_name" content="pansis.io">
        <meta property="og:updated_time" content="2024-11-03">
        <meta property="og:image" content="" />
        <meta property="og:image:secure_url" content="">
        <meta property="og:image:alt" content="3.1 嵌入式系统">
        <!-- Twitter (post.ejs) -->
        <meta name="twitter:card" content="summary_large_image">
        <meta name="twitter:title" content="3.1 嵌入式系统">
        <meta name="twitter:description" content="一、相关概念
1、嵌入式系统的定义
以应用为中心，以计算机技术为基础， 软件及硬件可裁剪，满足应用系统对功能(含 AI）、可靠性、成本、体积、功耗等方面严 格要求的专用计算机系统
2、嵌入式操作系统分类
1、按收费模式划分

商用型 ：Vx...">
        <!-- <meta name="twitter:site" content="@WBoy0609">
        <meta name="twitter:creator" content="@WBoy0609"> -->
        <meta name="twitter:image" content="">
</head>

<body>
    <div class="main animated">
        <div class="header animated fadeInDown">
    <div class="site_title_container">
        <div class="site_title">
            <a href="https://github.pansis.site">pansis.io</a>
        </div>
    </div>
    <div class="my_socials">
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
        <a href="https://github.pansis.site/atom.xml" title="rss" target="_blank"><i class="iconfont icon-rss"></i></a>
    </div>
</div>

    <div class="header_menu">
        
            
                <a href="/" class="menu">首页</a>
            
        
            
                <a href="/tag/GWAaV2nvk/" class="menu">程序设计课程</a>
            
        
            
                <a href="/tag/24hangc" class="menu">比赛</a>
            
        
            
                <a href="/tag/L7r9STb75/" class="menu">Python教程</a>
            
        
            
                <a href="/tags" class="menu">分类</a>
            
        
        <div class="gridea-search-div">
            <form id="gridea-search-form" action="https://github.pansis.site/search/">
                <input class="gridea-search-input" autocomplete="off" spellcheck="false" name="q"/>
            </form>
        </div>
    </div>

            <div class="autopagerize_page_element">
                <div class="content">
                    <div class="post_page">
                        <div class="post animated fadeInDown">
                            <div class="post_title post_detail_title">
                                <h2>
                                    3.1 嵌入式系统
                                </h2>
                                <span class="article-info">
                                    2024-11-03, 1215 words, 5 min read
                                </span>
                            </div>
                            <div class="post_content markdown">
                                <p class="md_block">
                                    <span class="md_line md_line_start md_line_end">
                                        <h2 id="一-相关概念">一、相关概念</h2>
<h4 id="1-嵌入式系统的定义">1、嵌入式系统的定义</h4>
<p>以应用为中心，以计算机技术为基础， 软件及硬件可裁剪，满足应用系统对功能(含 AI）、可靠性、成本、体积、功耗等方面严 格要求的专用计算机系统</p>
<h4 id="2-嵌入式操作系统分类">2、嵌入式操作系统分类</h4>
<p>1、按收费模式划分</p>
<ul>
<li>商用型 ：Vxworks, Nucleux ，PlamOS, Symbian, WinCE, QNX,  pSOS,VRTX,Lynx OS, Hopen, Delta OS（道系统）</li>
<li>免费型 ：Linux, μCLinux,,eCos,uITRON，μC/OS-III,TinyOS，RTEMS 、Sel4，ROS、SylixOS （翼辉OS）、华为鸿蒙</li>
</ul>
<p>2、按实时性划分</p>
<ul>
<li>硬实时：Vxworks, RTEMS，sel4、SylixOS 、华为鸿蒙、道系统</li>
<li>软实时：WinCE,RTLinux</li>
<li>无实时：Embedded Linux，RO</li>
</ul>
<h4 id="3-星载操作系统特征">3、星载操作系统特征</h4>
<ul>
<li>微内核.：由于硬件资源有限，因此星载RTOS必须做成微内 核的操作系统</li>
<li>可裁减：能够根据不同的应用对操作系统进行不同的配置， 做到量体裁衣，也能更充分地利用硬件资源</li>
<li>强实时：星载系统都是强实时系统，对实现性要求很高</li>
<li>高稳定性与高可靠性</li>
<li>代码可固化：在现在的星载计算机中仍然采用PROM对代码 进行固化，这就要求星载RTOS必须是代码可固化</li>
</ul>
<h2 id="二-安全关键系统">二、安全关键系统</h2>
<h4 id="1-要求">1、要求</h4>
<p>在任何负载和运行状态下都要保证不能出现导致系统失效</p>
<h4 id="2-典型特征">2、典型特征</h4>
<ul>
<li>由异构节点组成的分布式系统，多种任务并发执行</li>
<li>通常为硬实时系统，对系统的响应时间和处理时序有严格要求</li>
<li>周期性任务和非周期性任务混合</li>
</ul>
<h4 id="3-系统行为特性具有确定性">3、系统行为特性具有确定性</h4>
<ul>
<li>时间确定性：在任何状态下，任务执行的时间特性都确定</li>
<li>故障处理确定性：在任何情况下，故障限制单元范围确定，故障处 理效果确定</li>
</ul>
<h2 id="三-微内核">三、微内核</h2>
<h4 id="1-设计思想">1、设计思想</h4>
<ul>
<li>精简，实现一个 “最小平台”</li>
<li>关注机制，而不 是策略</li>
<li>“回归原子核” （Goes back to  Nucleus）</li>
</ul>
<figure data-type="image" tabindex="1"><img src="http://cos.pansis.site/image-20241031142705701.png?abc123" alt="image-20241031142705701" loading="lazy"></figure>
<h4 id="2-sel4设计理念">2、seL4设计理念</h4>
<p>单一保护机制：cpabilities ，一种间接访问控制，可用来描述、管理 内核对象的权限</p>
<p>精简系统调用 ：只提供必要的、无法替代的，其他可以通过IPC 等方式实现</p>
<p>主要：Send，Wait 及其变种，Yiel</p>
<h4 id="3-sel4内核对象">3、seL4内核对象</h4>
<ul>
<li>线程TCB（Thread Control Block）</li>
<li>地址空间（如页表项、页表、页目录）</li>
<li>IPC端点（Endpoints，同步/异步IPC）</li>
<li>Capability空间</li>
<li>页框</li>
<li>中断对象</li>
<li>未定义内存</li>
</ul>
<h4 id="4-capabilities">4、Capabilities</h4>
<ul>
<li>Token：记录所描述的对象</li>
<li>对象有关的权限
<ul>
<li>读、写、授权（转移Cap，如授权另一个线 程）</li>
<li>在调用该对象时检查权限是否匹配</li>
<li>不需要使用全系统的访问控制列表，当调用 一个对象时，与其相关的Cap会检查权限等 信息</li>
</ul>
</li>
<li>存储在Capability空间中</li>
</ul>
<h4 id="5-ipc">5、IPC</h4>
<ul>
<li>
<p>一种基本的微内核操作</p>
</li>
<li>
<p>由受保护的用户级进程提供</p>
</li>
<li>
<p>基于C/S模式</p>
<img src="http://cos.pansis.site/image-20241031143105100.png?abc123" alt="image-20241031143105100" style="zoom:33%;" />
</li>
<li>
<p>通过IPC端点进行“握手”然后通信</p>
</li>
<li>
<p>提供同步/异步通信</p>
</li>
</ul>
<h4 id="6-内存管理">6、内存管理</h4>
<p>1、 内存分类</p>
<ul>
<li>未定义（untyped）：未使用内存，可以通过Retype 操作分配</li>
<li>页框（frames）：可被映射进地址空间</li>
<li>其他（如页表等）：用于存储特定的内核数据结构</li>
</ul>
<p>2、内核启动后不分配内存 ：剩余内存被标记为“未定义”，并送入初始地址空间</p>
<p>3、内核对象的内存需求必须明确定义，确保强资源隔离</p>
<h4 id="7-线程">7、线程</h4>
<p>1、由TCB描述和表示</p>
<p>2、主要成员</p>
<ul>
<li>Vspace：虚拟地址空间</li>
<li>Cspace：capability索引（指针）</li>
<li>故障入口：发生错误时，内核向该入口抛出异常</li>
<li>IPC缓冲区</li>
<li>栈指针（SP）、指令指针（IP）等</li>
<li>调度优先级</li>
<li>时间片长度</li>
</ul>
<h4 id="8-sel4调度">8、seL4调度</h4>
<p>1、目前采用基于优先级的时间片轮转调度，共256个优先级（0~255），总是选择优先级最高的线程</p>
<p>2、采用时间片轮转方式，着重于实时性能，而不是公平性</p>
<h4 id="9-中断异常处理">9、中断/异常处理</h4>
<p>1、中断请求过程被抽象为“通信”</p>
<ul>
<li>向一个异步通信端点发送消息</li>
<li>中断句柄通过该端点接收消息</li>
<li>中断句柄确认并处理中断请求</li>
</ul>
<p>2、异常处理</p>
<ul>
<li>发生异常时，内核向故障端点发送消息（包 含异常处理协议预先定义的错误信息）</li>
<li>回复异常消息将重启引发异常的线程</li>
</ul>
<h4 id="10-设备驱动">10、设备驱动</h4>
<p>1、设备驱动职责：  处理中断、与操作系统其他组件通信、访问设备寄存器</p>
<p>2、作为用户级线程实现，从内核剥离 ，提高内核可靠性，防止第三方代码导致内核故障</p>
<br />
                                            
                                </p>
                            </div>
                            <div class="post_footer">
                                
                                    <div class="meta">
                                        <div class="info"><span class="field tags"><i class="iconfont icon-tag-sm"></i>
                                                
                                                    <a href="https://github.pansis.site/tag/AVw14AAoK/" class="article-info">
                                                        嵌入式系统
                                                    </a>
                                                    
                                            </span>
                                        </div>
                                    </div>
                                    
                                        
                            </div>
                        </div>
                        
                            
                                <link rel="stylesheet" href="https://unpkg.com/gitalk/dist/gitalk.css">
<script src="https://unpkg.com/gitalk/dist/gitalk.min.js"></script>
<div id="gitalk-container" style="padding-bottom: 20px;"></div>
<script>
    var pageId = (location.pathname).substring(1, 49) // Ensure uniqueness and length less than 50
    pageId = pageId.endsWith('/') ? pageId.slice(0, -1) : pageId // 以斜杠结尾则去除
    var gitalk = new Gitalk({
        clientID: '9d5eba33618472c44a07',
        clientSecret: '065a85ed04333ceebfc4f01d7ca1674175730339',
        repo: 'fzxl2003.github.io',
        owner: 'fzxl2003',
        admin: ['fzxl2003'],
        id: pageId,
        distractionFreeMode: false  // Facebook-like distraction free mode
    })
    gitalk.render('gitalk-container')
</script>
                                    
                                        
                                                    
                    </div>
                </div>
            </div>
    </div>
    <div class="footer">
    
    <div class="powered_by">
        <a href="https://codeberg.org/kytrun/gridea-theme-one" target="_blank">Theme One,</a>
        <a href="https://open.gridea.dev/" target="_blank">Powered by Gridea&#65281;</a>
    </div>
    
    
        <div class="footer_slogan">
            Powered by <a href="https://github.com/getgridea/gridea" target="_blank">Gridea</a>
        </div>
    
    <div id="back_to_top" class="back_to_top">
        <span>△</span>
    </div>
    
</div>

<script src="https://github.pansis.site/media/scripts/util.js"></script>
        <link rel="stylesheet" href="//unpkg.com/@highlightjs/cdn-assets@11.5.1/styles/default.min.css">
        <script src="//unpkg.com/@highlightjs/cdn-assets@11.5.1/highlight.min.js"></script>
        <script>hljs.highlightAll();</script>
</body>

</html>